package titiritero.vista;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import titiritero.ControladorJuego;

public class VentanaMenu extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;

    private JButton ayuda;
    private NuevoJuego jugar;
    private VentanaJuego ventanaJuego;
    private VentanaAyuda ventanaAyuda;
    private JPanel menu;
    private Continuar continuar;

    public VentanaMenu(ControladorJuego controlador) {
        setTitle("Batalla Navalgo");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(0, 0, screenSize.width, screenSize.height - 50); // x,y,ancho,alto
        setVisible(true);
        setResizable(false);

        menu = new JPanel();
        menu.setLayout(new FlowLayout());

        jugar = new NuevoJuego();
        jugar.addActionListener(controlador);

        ayuda = new JButton("Ayuda");
        ayuda.addActionListener(this);

        continuar = new Continuar();
        continuar.addActionListener(controlador);

        Salir salir = new Salir();
        salir.addActionListener(controlador);

        jugar.setBounds(screenSize.width / 2, screenSize.height / 5 - 50, 150, 75);
        continuar.setBounds(screenSize.width / 2, screenSize.height * 2 / 5 - 50, 150, 75);
        ayuda.setBounds(screenSize.width / 2, screenSize.height * 3 / 5 - 50, 150, 75);
        salir.setBounds(screenSize.width / 2, screenSize.height * 4 / 5 - 50, 150, 75);

        ventanaJuego = new VentanaJuego(controlador);
        ventanaAyuda = new VentanaAyuda(this);
        menu.setBackground(Color.cyan);
        add(ventanaAyuda);
        add(ventanaJuego);
        menu.add(jugar);
        menu.add(ayuda);
        menu.add(continuar);
        menu.add(salir);
        menu.setLayout(null);
        add(menu);

        paintComponents(getGraphics());

    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == ayuda) {
            menu.setVisible(false);
            ventanaAyuda.setVisible(true);
        } else {
            ventanaAyuda.setVisible(false);
            menu.setVisible(true);
        }

        paintComponents(getGraphics());
    }

    public VentanaJuego getVentanaJuego() {
        return ventanaJuego;
    }

    public void mostrarJuego() {
        menu.setVisible(false);
        ventanaJuego.setVisible(true);
    }

    public void juegoPerdido() {
        removeAll();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        JFrame perdedor = new JFrame();
        perdedor.setVisible(true);
        perdedor.setDefaultCloseOperation(EXIT_ON_CLOSE);
        perdedor.setTitle("Looser");
        JButton perdiste = new JButton("Has perdido!");
        perdiste.setBackground(Color.red);
        perdedor.setBounds((screenSize.width / 2) - (screenSize.width / 10), (screenSize.height / 2) - (screenSize.height / 10), (screenSize.width / 5), (screenSize.height / 5));
        perdedor.add(perdiste);

    }

    public void juegoGanado(int puntos) {
        removeAll();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        JFrame ganador = new JFrame();
        ganador.setVisible(true);
        ganador.setDefaultCloseOperation(EXIT_ON_CLOSE);
        ganador.setTitle("Winner");
        JButton ganaste = new JButton("Has ganado!");
        ganaste.setBackground(Color.green);
        ganador.setBounds((screenSize.width / 2) - (screenSize.width / 10), (screenSize.height / 2) - (screenSize.height / 10), (screenSize.width / 5), (screenSize.height / 5));
        ganador.add(ganaste);

    }

    public void pullThePlug() {
        WindowEvent wev = new WindowEvent(this, WindowEvent.WINDOW_CLOSING);
        Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(wev);
    }

    public void salirAMenu() {
        ventanaJuego.setVisible(false);
        menu.setVisible(true);

    }

}
